package pzl.mn.practice.dyn_proxy;


public class _START_dynProxy {

    public static void mian(){
        // jdk动态代理测试
        Subject subject = new JDKDynamicProxy(new RealSubject()).getProxy();
        subject.doSomething();
    }

}

/*

【解耦合】

静态代理：了解设计模式中的代理模式的童鞋应该都知道，如果想要生成代理类，需要让代理类和被代理类实现同一个接口，并且在代理类中添加被代理类的引用，
代理类方法实现中添加代理逻辑，并决定是否调用被代理类方法，这种通过硬编码的方式指定代理类与被代理类的方式，叫静态代理。
可以明显看出，静态代理类与被代理类是耦合的，如果要代理100个类，你就得写100个代理类

动态代理：其实动态代理与静态代理的本质一样，最终程序运行时都需要生成一个代理对象实例，通过它来完成相关增强以及业务逻辑，
只不过静态代理需要硬编码的方式指定，而动态代理则是以动态方式生成代理(有编译时操作字节码生成的方式、以及运行时通过反射、字节码生成的方式)。
动态生成的好处很明显，代理逻辑与业务逻辑是互相独立的，没有耦合，代理1个类100个类没有任何区别

AOP旨在通过一种无耦合的方式来为程序带来增强。而动态代理，就是AOP实现方式中的一种











 */